iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
Modern Web

Vue的菜鳥開發學習歷程系列 第 9

[Day09] 菜鳥 Vue 不同如果

  • 分享至 

  • xImage
  •  

好的
因為加班熬夜加班熬夜 雖然現在也在熬夜...
承昨日的 「 v-if 」: 條件式渲染
  如果條件成立,則「插入」元素;如果不成立,則「移除」元素
  對DOM做「 appendremove

而 v-if 還可以搭配「 v-else 」、「 v-else-if
來達到多種選擇的切換顯示!
不錯吧! 光一個判斷式就有這些玩法~

但.../images/emoticon/emoticon38.gif
我因應我公司規則,
盡量只用 「 v-if ]
/images/emoticon/emoticon06.gif
哼哼
為什麼勒~


假設你有
100行的內容放在「 v-if 」
然後再一個100行內容放在 「 v-else 」
...
/images/emoticon/emoticon04.gif
我的螢幕不夠長啊!!!!!
要滑啊滑才比較好找到 v-ifv-else 的分隔點在哪
難找啊~
所以~



如果要用到 v-else 的時候
我們可以改成「 !<veriable>
如下~

    <p v-if="isSeen">笑 還笑</p>
    <p v-if="!isSeen">消失給你看看</p>

同理~!!
v-else-if 」請舉一反三吧
/images/emoticon/emoticon12.gif

好的~
快快進入正題
今天來一個跟他很像但不同品種
v-show

  • Vue的基本語法3: show(顯不顯示)
    v-show 」: 條件式渲染

    蛤!?!? 條件式渲染... PART 2!?


    聽講完話啊 孩子

    來人! 上例!

        <p v-show="isShow">聽講完話啊 孩子</p>
    
        var isShow = true;
    

    step 1
    step 2
    來來來
    我 v-show 一個綁「isShow」,一個綁「!isShow」
    所以對 v-show 而言
    一個顯示(true)
    一個不顯示(false)


    現在! 來品味一下
    重點「 不顯示(false) 」那個,也就是「 v-show="!isShow"
    他雖然畫面上看不到
    但在DOM上
    他是存在的

    他.是.存.在.的

    哎唷,我的媽呀
    他用了「 CSS 」的「 display屬性
    遮你的雙眼啊!! 哎唷威呀


    沒感覺?
    反一個!
    step 3
    step 4
    看吧~
    認清現實吧! 對CSS不了解的請稍稍google一下吧

    好的,附個官方語錄:

    Another option for conditionally displaying an element is the v-show directive. The usage is largely the same:

      <h1 v-show="ok">Hello!</h1>
    

    The difference is that an element with v-show will always be rendered and remain in the DOM; v-show only toggles the display CSS property of the element.

    v-show


    好! 初始化!
    v-show 」: 條件式渲染
      如果條件成立,則對元素「移除」style「 display: none;」;如果不成立,則對元素「插入」style「 display: none;


    看出端倪了嗎??
    來來,在上一個官方語錄:

    v-if is “real” conditional rendering because it ensures that event listeners and child components inside the conditional block are properly destroyed and re-created during toggles.

    v-if is also lazy: if the condition is false on initial render, it will not do anything - the conditional block won’t be rendered until the condition becomes true for the first time.

    In comparison, v-show is much simpler - the element is always rendered regardless of initial condition, with CSS-based toggling.
    Generally speaking, v-if has higher toggle costs while v-show has higher initial render costs. So prefer v-show if you need to toggle something very often, and prefer v-if if the condition is unlikely to change at runtime.

    v-if vs v-show


    「 v-if 」: 是真正的 條件式渲染 ,因為會確實的做「重建」和「銷毀」
    「 v-show 」: 是擬似的 條件式渲染 ,一直存在畫面,利用「CSS」做「遮不遮你眼」

    所以
    一般來說
    有著音速般的 頻繁 切換,使用「 v-show 」會比較好
    有著關鍵十個 條件少變化 ,使用「 v-if 」會比較好

    雖然應該還是視狀況決定啦~

    好的~

    明天再續吧~掰 /images/emoticon/emoticon29.gif


上一篇
[Day08] 菜鳥 Vue 如果......
下一篇
[Day10] 菜鳥 Vue 循環之路
系列文
Vue的菜鳥開發學習歷程12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言